package managedBean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import negocio.Fachada;
import negocio.IFachada;
import negocio.UsuarioNegocio;
import negocio.exception.LoginInvalido;
import basica.Usuario;

@ManagedBean
@SessionScoped
public class UsuarioBean {
	
	private Usuario usuario = new Usuario();
	private String login;
	private String senha;
	private String confirmarSenha;
	private List<Usuario> listaUsuario;
	
	private IFachada fachada = Fachada.getInstancia();
	
	public void init(){
		System.out.println("\ninit");
		usuario = null;
		login = null;
		senha = null;
		confirmarSenha = null;
		listaUsuario = null;
	}
	
	public String novo() {
		System.out.println("\nnovo");
		usuario = new Usuario();
		return "/publico/usuario.xhtml";
	}
	
	
	public String logar() {
		System.out.println("\nlogar");
		try {
			usuario = fachada.efetuarLogin(login, senha);
			return "/publico/home.xhtml?faces-redirect=true";
		} catch (LoginInvalido e) {
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Login/Senha inválidos"));
		}
		return "login.xhtml";
		//return "/publico/home.xhtml";
		//return "/home.xhtml?faces-redirect=true";
	}
	
	public String salvar() {
		try {
			System.out.println("\nsalvar");
			
			String senha = usuario.getSenha();
			if (!senha.equals(confirmarSenha)) {
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("A senha não foi confirmada corretamente"));
				return null;
			}
			
			fachada.inserirOuAtualizar(usuario);
			return "/publico/usuarioSucesso.xhtml";
			
		} catch (Exception e ) {
			e.printStackTrace();
		}
		return null;
	}
	
	public List<Usuario> getLista() {
		System.out.println("\ngetLista");
		if (listaUsuario == null) {
			UsuarioNegocio usuarioRN = new UsuarioNegocio();
			listaUsuario = usuarioRN.consultarTodos();
		}
		return listaUsuario;
	}
	
	//getters and setters
	public Usuario getUsuario() {
		System.out.println("\ngetUsuario");
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		System.out.println("\nsetUsuario");
		this.usuario = usuario;
	}

	public String getLogin() {
		System.out.println("\ngetLogin");
		return login;
	}
	public void setLogin(String login) {
		System.out.println("\nsetLogin");
		this.login = login;
	}

	public String getSenha() {
		System.out.println("\ngetSenha");
		return senha;
	}
	public void setSenha(String senha) {
		System.out.println("\nsetSenha");
		this.senha = senha;
	}

	public String getConfirmarSenha() {
		System.out.println("\ngetConfirmarSenha");
		return confirmarSenha;
	}
	public void setConfirmarSenha(String confirmarSenha) {
		System.out.println("\nsetConfirmarSenha");
		this.confirmarSenha = confirmarSenha;
	}
}
